﻿#ifndef FILEOPERATION_H
#define FILEOPERATION_H
#include <QFile>
#include <QXmlStreamReader>
#include <QDebug>
#include<QFileDialog>
#include<QMessageBox>
#include <QTextStream>
#include <QWidget>
#include <QDir>
#include <QCoreApplication>
#include <QDateTime>
#include <QFile>
#include <QApplication>
extern std::list<QString> SourceFilePath;//路径容器
class FileOperation
{
public:
    struct FileInfo
    {
        double fileSize;
        QString fileName;//文件名字
        QString lastModified;// 修改时间
        QString sourceFilePath;//路径
        QString officerID;//警员编号
        QString productNumber;//序列号
    };
       std::vector<FileInfo> filelist;//文件链表
       std::list<QString>  video;
        std::list<QString>  log;
         std::list<QString>  picture;
          std::list<QString>  audio;
          QString Name;//采集站名称
              QString Version;//版本号
              QString Model;//采集站类型
              QString Datetime;//版本时间
              QString Icon;//图标
              QString BVersion;//后台版本号
              QString URL;//后台地址
              QString Ttime;//后台心跳时间
              QString Btime;//公告心跳时间
              QString MoltiDisk;//多盘路径
              QString Mapping;//接口映射
              QString ServerAddress;//服务端IP
              QString ServerPor;//服务端端口
              QString Sockettime;//Socket重接时间
              QString UploadUrl ;//上传路径
              QString MountUrl ;//挂载根目录
              QString VideoEncryption;//视频加密
              QString DeleteFiles;//删除视频
              QString WhiteList;//白名单
              QString MUI;//语言包
              QString MemoryLack;//内存不足报警
              QString CPULack;//CPU不足报警
              QString TheLocalKey;//账号
              QString TheLocalKeyPDW;//密码
              QString Area;//地区
              QString Mode;//上传模式
              QString MaxUploadRate;//最大上传速率
              QString prior;//优先口
              QString System;//系统
              QString List;
              QString Row;
              QString PortNum;
              QString NetwordName;
public:
    bool ReadLicenseInfo(QString ConfigName,QString key,QString &value);
   // bool ReadInfo(QString ConfigName,QString key,QString &value);
    bool ReadRouteInfo(QString ConfigName,QString key,QString &value);
    bool ReadRouteValueInfo(QString ConfigName,QString &key,QString value);
    bool WriteInfo(QString key);
    bool WriteInfo(QString key,QString value);
    //根据key值修改路径文件
    //bool UpdateRouteValueInfo(QString ConfigName,QString key,QString value);

 //  int copyFiles(const QString& sourceDirPath, const QString& destinationDirPath,const QString& serialnumber,const QString& timestr,const QString& Badgenum,const QString Device,bool DeleteFiles);
//    bool WriteSaveInfo(QString ConfigName,QString key,QString value);
//    bool WriteSaveInfo(QString serialize,QString filename,QString time,QString filetime,QString Username);
    //清空保存文件
    bool DeleteSaveInfo(QString ConfigName);
    void findLogFiles(const QString& path);
    void findFilesByCreationDate(const QString& path, const QString& startDate, const QString& endDate, const QString& OfficerID, const QString& productNumber);
    void findFilesByCreationDate(const QString& path);
        void findFilesByCreationDateAotu(const QString &path);
public:
    FileOperation();

    bool UpdateInfo(QString ConfigName, QString key, QString newValue);
    bool ReadVerInfo(QString ConfigName, QString key, QString &value);
    bool Write(QString ConfigName, QString key);
    bool ReadInfo(QString ConfigName);
};

#endif // FILEOPERATION_H
